package com.ithema.controller;

import com.ithema.exception.BusinessException;
import com.ithema.exception.SystemException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class ProjectExceptionControllerAdvice {
    /*@ExceptionHandler(Exception.class)
    public void doAction(Exception ex){
        System.out.println("嘿嘿出现异常了");
    }//初级版  发送异常前端只能收到  1*/

    @ExceptionHandler(Exception.class)
    public Result doAction(Exception ex){
        //记录日志  记录自己代码是否有误

        //发送消息给运维处理

        //发送邮件给开发人员

        //把消息返回给前端
        return new Result(Code.SYSTEM_UNKNOWN_ERROR,null,"系统繁忙，请稍后再试！");
    }//升级版  前端收到协议

//    处理系统异常时
    @ExceptionHandler(SystemException.class)
    public Result doSystemExceptionAction(SystemException ex){
        //记录日志  记录自己代码是否有误
        //发送消息给运维处理
        //发送邮件给开发人员
        //把消息返回给前端
        return new Result(ex.getCode(),null,ex.getMessage());//ex.getMessage()的方法是通过super不停地上传后爷爷的返回方法
    }


    //    处理业务异常时   不用进行日志，运维，邮件等！
    @ExceptionHandler(BusinessException.class)
    public Result doBusinessExceptionAction(BusinessException ex){
        //把消息返回给前端
        return new Result(ex.getCode(),null,ex.getMessage());//ex.getMessage()的方法是通过super不停地上传后爷爷的返回方法
    }

}
